home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 1257 / conv.c_ / conv.c
C/C++ Source or Header  |  1997-04-18  |  3KB  |  126 lines

  1. /* EasyCODE(C++) V5.1 02.03.1995 13:54:02 */
  2. /* EasyCODE O
  3. If=horizontal
  4. LevelNumbers=no
  5. LineNumbers=no
  6. ScreenFont=Courier New,,80,9220,-11,0,400,0,0,0,0,0,0,3,2,1,49
  7. PrinterFont=Courier New,,80,17414,-34,0,400,0,0,0,0,0,0,3,2,1,49
  8. LastLevelId=16 */
  9.  
  10. /* EasyCODE ( 1
  11.    conv.c */
  12.  
  13. /* EasyCODE ( 13
  14.    Includes, Externals */
  15. #include "conv.h"
  16.  
  17. extern char* TABLE[ETF_LASTKEYWORD];
  18. /* EasyCODE ) */
  19.  
  20. /* EasyCODE ( 14
  21.    GetChar */
  22.  
  23. /* EasyCODE F */
  24. char GetChar()
  25.  
  26. // Delivers next character from read buffer
  27.    {
  28.    return (inbuf[inbufPos++]);
  29.    }
  30. /* EasyCODE ) */
  31.  
  32. /* EasyCODE ( 15
  33.    GetKeyword */
  34.  
  35. /* EasyCODE F */
  36. int GetKeyword(char* delimiter, char* contents)
  37.  
  38. // Delivers ID of keyword of line in buffer;
  39. // Delimiter and content (if there is one) are also delivered.
  40.    {
  41.    char keyword[MAX_KEYWORDLEN+1];
  42.    int wordPos;
  43.    /* EasyCODE - */
  44.    int i;
  45.    char ch;
  46.    /* EasyCODE - */
  47.    inbufPos = 0;
  48.    wordPos  = 0;
  49.    *contents = '\0';
  50.    *delimiter = ';';
  51.    *(delimiter+1) = '\0';
  52.    memset(keyword, '\0', sizeof(keyword));
  53.    /* EasyCODE - */
  54.    ch = GetChar();
  55.    /* EasyCODE - */
  56.    // Skip white spaces before keyword
  57.    while (ch == ' ')
  58.       {
  59.       ch = GetChar();
  60.       }
  61.    // If line is empty return NO_KEYWORD
  62.    if (((ch == '\r')||(ch == '\n')))
  63.       {
  64.       return (NO_KEYWORD);
  65.       }
  66.    // Extract keyword
  67.    while (isalnum((int) ch))
  68.       {
  69.       keyword[wordPos++] = ch;
  70.       ch=GetChar();
  71.       }
  72.    // If unexpected EOF return EOF_KEYWORD
  73.    if (ch == EOF)
  74.       {
  75.       return (EOF_KEYWORD);
  76.       }
  77.    // Check whether keyword is valid
  78.    for (i=0;i<=ETF_LASTKEYWORD;i++)
  79.       {
  80.       if (strcmp(keyword,TABLE[i]) == 0)
  81.          {
  82.          break;
  83.          }
  84.       }
  85.    // If invalid keyword return ERROR_KEYWORD
  86.    if (i>ETF_LASTKEYWORD)
  87.       {
  88.       return (ERROR_KEYWORD);
  89.       }
  90.    // If delimiter "=" or ":", deliver content
  91.    if ((ch == '=') || (ch == ':'))
  92.       {
  93.       *delimiter=ch;
  94.       /* EasyCODE - */
  95.       ch = GetChar();
  96.       while (ch != '\0')
  97.          {
  98.          if (ch == EOF)
  99.             {
  100.             return (EOF_KEYWORD);
  101.             }
  102.          *contents++ = ch;
  103.          ch = GetChar();
  104.          }
  105.       *contents='\0';
  106.       }
  107.    // printf("%s",inbuf);
  108.    /* EasyCODE - */
  109.    // Return valid keyword
  110.    return (i);
  111.    }
  112. /* EasyCODE ) */
  113.  
  114. /* EasyCODE ( 16
  115.    err_msg */
  116.  
  117. /* EasyCODE F */
  118. void err_msg(int lineNum, char* text)
  119.  
  120. // Prints error message
  121.    {
  122.    printf("Line %d: %s\n", lineNum, text);
  123.    }
  124. /* EasyCODE ) */
  125. /* EasyCODE ) */
  126.